<?php
require_once 'ConfigClement.php';
require_once 'dateCalcul.php';
require_once 'Comptabilite.php';
require_once 'Emprunt.php';

class Dossier
{

	private $id;
	private $date;
	private $type_client;
	private $societe;
	private $numero_compte_client;
	private $nom;
	private $prenom;
	private $date_naissance;
	private $profession;
	private $email;
	private $adresse;
	private $tel_domicile;
	private $tel_portable;
	private $cadre;
	private $fumeur;

	private $list_emprunt;
	
	private $nom_emetteur;
	private $prenom_emetteur;
	private $numero_matricule_emetteur;
	private $numero_tel_emetteur;
	private $agence_service_emetteur;
	private $copie_emetteur;
	
	private $id_banque;
	private $statut;
	private $date_changement_statut;
	private $last_statut;
	
	private static $order = 'date';
	private static $way = 'desc';
	
	public function __construct($date, $type_client, $societe, $numero_compte_client, $nom, $prenom, 
			$date_naissance, $profession, $email, $adresse, $tel_domicile, $tel_portable, $cadre, $fumeur, $list_emprunt,
			$nom_emetteur, $prenom_emetteur, $numero_matricule_emetteur, $numero_tel_emetteur, $agence_service_emetteur, $copie_emetteur,
			$id_banque, $statut, $date_changement_statut)
	{
		$this->id = 0;
		$this->date = $date;
		$this->type_client = $type_client;
		$this->societe = $societe;
		$this->numero_compte_client = $numero_compte_client;
		$this->nom = $nom;
		$this->prenom = $prenom;
		$this->date_naissance = $date_naissance;
		$this->profession = $profession;
		$this->email = $email;
		$this->adresse = $adresse;
		$this->tel_domicile = $tel_domicile;
		$this->tel_portable = $tel_portable;
		$this->cadre = $cadre;
		$this->fumeur = $fumeur;
		$this->list_emprunt = $list_emprunt;
		
		$this->nom_emetteur = $nom_emetteur;
		$this->prenom_emetteur = $prenom_emetteur;
		$this->numero_matricule_emetteur = $numero_matricule_emetteur;
		$this->numero_tel_emetteur = $numero_tel_emetteur;
		$this->agence_service_emetteur = $agence_service_emetteur;
		$this->copie_emetteur = $copie_emetteur;
		
		$this->id_banque = $id_banque;
		$this->statut = $statut;
		$this->last_statut = $statut;
		$this->date_changement_statut = $date_changement_statut;
	}

	public function __set($attr,$value)
	{
		if(isset($this->$attr)) $this->$attr = $value;
		else throw new Exception('Unknow attribute '.$attr);
	}

	public function __get($attr)
	{
		if($attr == 'cadre' || $attr == 'fumeur')
		{
			 
			return (($this->$attr == 1) ? "Oui" : "Non");
		}else if ($attr == 'date_signature_prevu' && $this->$attr == '01-01-1970'){
			return "";
		}
		
		if(isset($this->$attr)) return $this->$attr;
		else throw new Exception('Unknow attribute '.$attr);
	}
	
	public static function setOrder($order, $way)
	{
		Dossier::$order = $order;
		Dossier::$way = $way;
	}
	
	public static function getListDossierByBanque($id_banque)
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
		
		//mysql_connect ($serveur,$login,$motdepasse) or die ('ERREUR '.mysql_error());
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);

		$listDossier = array();

		if ($con) {

			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());

			$requete = "SELECT * FROM dossier WHERE id_banque = '$id_banque' ORDER BY ".Dossier::$order." ".Dossier::$way;
			$resultat = mysql_query ($requete);

			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}



			while ($ligne = mysql_fetch_assoc($resultat)) {

			$dossier = Dossier::getDossier($ligne);
			
				$dossier->id = $ligne['id'];
				array_push($listDossier,$dossier);
			}


		}else {
			echo 'connexion impossible...'.mysql_error();
		}

		mysql_close($con);

		return $listDossier;

	}
	
	
	
	public static function getListAllDossier()
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
	
		//mysql_connect ($serveur,$login,$motdepasse) or die ('ERREUR '.mysql_error());
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);
	
		$listDossier = array();
	
		if ($con) {
	
			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());
	
			$requete = "SELECT * FROM dossier ORDER BY ".Dossier::$order." ".Dossier::$way;
			$resultat = mysql_query ($requete);
	
			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}
	
	
	
			while ($ligne = mysql_fetch_assoc($resultat)) {
	
				$dossier = Dossier::getDossier($ligne);
	
				$dossier->id = $ligne['id'];
				array_push($listDossier,$dossier);
			}
	
	
		}else {
			echo 'connexion impossible...'.mysql_error();
		}
	
		mysql_close($con);
	
		return $listDossier;
	
	}

	public static function getListDossierByKey($key, $id_banque)
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
		
		//mysql_connect ($serveur,$login,$motdepasse) or die ('ERREUR '.mysql_error());
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);

		$listDossier = array();

		if ($con) {

			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());

			$requete = "SELECT * FROM dossier WHERE (numero_compte_client like '%$key%' OR nom like '%$key%' OR prenom like '%$key%' OR remarques like '%$key%' OR nom_emetteur like '%$key%' OR prenom_emetteur like '%$key%')";
			
			if($id_banque > -1)
				$requete = $requete." AND id_banque = $id_banque  ORDER BY ".Dossier::$order." ".Dossier::$way;
			else
				$requete = $requete." ORDER BY ".Dossier::$order." ".Dossier::$way;
			
			$resultat = mysql_query ($requete);

			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}



			while ($ligne = mysql_fetch_assoc($resultat)) {

					$dossier = Dossier::getDossier($ligne);

				$dossier->id = $ligne['id'];
				array_push($listDossier,$dossier);
			}


		}else {
			echo 'connexion impossible...'.mysql_error();
		}

		mysql_close($con);

		return $listDossier;

	}
	
	public static function getListDossierByKeyAndStatut($key, $statut, $id_banque)
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
	
		//mysql_connect ($serveur,$login,$motdepasse) or die ('ERREUR '.mysql_error());
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);
	
		$listDossier = array();
	
		if ($con) {
	
			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());
	
			$requete = "SELECT * FROM dossier WHERE (numero_compte_client like '%$key%' OR nom like '%$key%' OR prenom like '%$key%' OR remarques like '%$key%' OR nom_emetteur like '%$key%' OR prenom_emetteur like '%$key%') AND statut=$statut";
			
			if($id_banque > -1)
				$requete = $requete." AND id_banque = $id_banque  ORDER BY ".Dossier::$order." ".Dossier::$way;
			else
				$requete = $requete." ORDER BY ".Dossier::$order." ".Dossier::$way;
			
			$resultat = mysql_query ($requete);
	
			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}
	
	
	
			while ($ligne = mysql_fetch_assoc($resultat)) {
	
				$dossier = Dossier::getDossier($ligne);
	
				$dossier->id = $ligne['id'];
				array_push($listDossier,$dossier);
			}
	
	
		}else {
			echo 'connexion impossible...'.mysql_error();
		}
	
		mysql_close($con);
	
		return $listDossier;
	
	}
	
	public static function getDossier($ligne)
	{
		$list_dossier = Emprunt::getEmprunt($ligne['id']);
		
		return new Dossier(changeDateUStoFR ($ligne['date']), $ligne['type_client'], $ligne['societe'], $ligne['numero_compte_client'], $ligne['nom'], $ligne['prenom'], changeDateUStoFR ($ligne['date_naissance']), $ligne['profession'], 
				$ligne['email'], $ligne['adresse'], $ligne['tel_domicile'], $ligne['tel_portable'], $ligne['cadre'], $ligne['fumeur'],
				$list_dossier, 
				$ligne['nom_emetteur'], $ligne['prenom_emetteur'], $ligne['numero_matricule_emetteur'], $ligne['numero_tel_emetteur'], $ligne['agence_service_emetteur'], $ligne['copie_emetteur'],
				$ligne['id_banque'], $ligne['statut'], changeDateUStoFR ($ligne['date_changement_statut']));
		
	}
	
	public static function getListDossierByStatut($key, $id_banque)
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
	
		//mysql_connect ($serveur,$login,$motdepasse) or die ('ERREUR '.mysql_error());
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);
	
		$listDossier = array();
	
		if ($con) {
	
			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());
	
			$requete = "SELECT * FROM dossier WHERE statut = $key";
			
			if($id_banque > -1)
				$requete = $requete." AND id_banque = $id_banque  ORDER BY ".Dossier::$order." ".Dossier::$way;
			else
				$requete = $requete." ORDER BY ".Dossier::$order." ".Dossier::$way;
			
			
			
			$resultat = mysql_query ($requete);
	
			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}
	
	
	
			while ($ligne = mysql_fetch_assoc($resultat)) {
	
				$dossier = Dossier::getDossier($ligne);
	
				$dossier->id = $ligne['id'];
				array_push($listDossier,$dossier);
			}
	
	
		}else {
			echo 'connexion impossible...'.mysql_error();
		}
	
		mysql_close($con);
	
		return $listDossier;
	
	}
	


	public static function getDossierById($id)
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
	
		//mysql_connect ($serveur,$login,$motdepasse) or die ('ERREUR '.mysql_error());
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);

		if ($con) {

			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());

			$requete = "SELECT * FROM dossier WHERE id = '$id'";
			$resultat = mysql_query ($requete);

			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}



			while ($ligne = mysql_fetch_assoc($resultat)) {

			$dossier = Dossier::getDossier($ligne);

				$dossier->id = $ligne['id'];
			}


		}else {
			echo 'connexion impossible...'.mysql_error();
		}

		mysql_close($con);

		return $dossier;

	}

	public function saveDossier()
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
		
		$date = changeDateFRtoUS($this->date);
		$date_naissance = changeDateFRtoUS ($this->date_naissance);
		//$date_signature_prevu = changeDateFRtoUS($this->date_signature_prevu);

		
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);

		if ($con) {

			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());

				$requete = "INSERT INTO dossier (date, numero_compte_client, nom, prenom, date_naissance, profession, tel_domicile,
				tel_portable, email, adresse, cadre, fumeur, societe, nom_emetteur, prenom_emetteur, numero_matricule_emetteur, numero_tel_emetteur, agence_service_emetteur,
				copie_emetteur, id_banque, statut, type_client, date_changement_statut)
				VALUES('$date', '$this->numero_compte_client', '$this->nom', '$this->prenom', '$date_naissance', '$this->profession', '$this->tel_domicile',
				'$this->tel_portable', '$this->email', '$this->adresse', $this->cadre, $this->fumeur, '$this->societe',
				'$this->nom_emetteur', '$this->prenom_emetteur', '$this->numero_matricule_emetteur', '$this->numero_tel_emetteur', '$this->agence_service_emetteur',
				'$this->copie_emetteur', $this->id_banque, '$this->statut', '$this->type_client', '$date')";
				
				
			
			$resultat = mysql_query ($requete);
			
			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}

		}else {
			echo 'connexion impossible...'.mysql_error();
		}

		mysql_close($con);
	}

	public function updateDossier()
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
		
		$date = changeDateFRtoUS($this->date);
		$date_naissance = changeDateFRtoUS ($this->date_naissance);
		$date_changement_statut = changeDateFRtoUS($this->date_changement_statut);
	
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);

		if ($con) {
			
			if($this->statut != $this->last_statut){
				$date_changement_statut = date("Y/m/d");
			}

			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());

			$requete = "UPDATE dossier SET date = '$date', numero_compte_client = '$this->numero_compte_client', nom = '$this->nom',
			prenom = '$this->prenom', date_naissance = '$date_naissance', profession = '$this->profession', tel_domicile = '$this->tel_domicile',
			tel_portable = '$this->tel_portable', email = '$this->email', adresse = '$this->adresse', cadre = $this->cadre, fumeur = $this->fumeur, societe = '$this->societe',
			nom_emetteur = '$this->nom_emetteur', prenom_emetteur = '$this->prenom_emetteur', numero_matricule_emetteur = '$this->numero_matricule_emetteur', numero_tel_emetteur = '$this->numero_tel_emetteur',
			agence_service_emetteur = '$this->agence_service_emetteur', copie_emetteur = '$this->copie_emetteur', statut = '$this->statut', type_client = '$this->type_client', date_changement_statut = '$date_changement_statut' where id = $this->id";
			//echo $requete;
			
			$resultat = mysql_query ($requete);
			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}

		}else {
					echo 'connexion impossible...'.mysql_error();
		}

		mysql_close($con);
	}
	
	
	public function deleteDossier()
	{
		
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;

		$con = mysql_connect ($serveur,$loginBd,$motdepasse);
		
		if ($con) {
		
			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());
		
			$requete = "DELETE FROM dossier where id = $this->id";
				
			$resultat = mysql_query ($requete);
			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}
		
		}else {
			echo 'connexion impossible...'.mysql_error();
		}
		
		mysql_close($con);
		
		foreach(Comptabilite::getListComptaByDossier($this->id) as $compta){
			$compta->deleteComptabilite();
		}
		
	}
	
	public function setAllValueDossier($date, $type_client, $societe, $numero_compte_client, $nom, $prenom,
			$profession, $date_naissance, $email, $adresse, $tel_domicile, $tel_portable, $cadre, $fumeur,
		 $nom_emetteur, $prenom_emetteur, $numero_matricule_emetteur,
			$numero_tel_emetteur, $agence_service_emetteur, $copie_emetteur, $id_banque, $statut)
	{
		$this->date = $date;
		$this->type_client = $type_client;
		$this->societe = $societe;
		$this->numero_compte_client = $numero_compte_client;
		$this->nom = $nom;
		$this->prenom = $prenom;
		$this->profession = $profession;
		$this->date_naissance = $date_naissance;
		$this->email = $email;
		$this->adresse = $adresse;
		$this->tel_domicile = $tel_domicile;
		$this->tel_portable = $tel_portable;
		$this->cadre = $cadre;
		$this->fumeur = $fumeur;
		
		$this->nom_emetteur = $nom_emetteur;
		$this->prenom_emetteur = $prenom_emetteur;
		$this->numero_matricule_emetteur = $numero_matricule_emetteur;
		$this->numero_tel_emetteur = $numero_tel_emetteur;
		$this->agence_service_emetteur = $agence_service_emetteur;
		$this->copie_emetteur = $copie_emetteur;
		
		$this->id_banque = $id_banque;
		$this->statut = $statut;	
	}
	
	public static function getLastIdByBanque($id_banque)
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);
		$id_dossier = -1;
		if ($con) {
	
			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());
	
			$requete = "SELECT MAX(id) FROM dossier WHERE id_banque = '$id_banque'";
			$resultat = mysql_query ($requete);
	
			if (!$resultat) {
				echo "Impossible d'exêcuter la requête  dans la base : " . mysql_error();
				exit;
			}
			
			if ($ligne = mysql_fetch_assoc($resultat)) {
				$id_dossier = $ligne['MAX(id)'];
			}

		}else {
			echo 'connexion impossible...'.mysql_error();
		}
	
		mysql_close($con);
		
		return $id_dossier;
	}
	
	public static function getNbDossierByBanqueAndStatutLastMonth($id_banque,$statut)
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);
		$count = -1;
		$datepremier = date("Y/m/d",mktime(0, 0, 0, date("m") - 1  , 1, date("Y")));
		$datesecond = date("Y/m/d",mktime(0, 0, 0, date("m"), 0, date("Y")));
		
		if ($con) {
	
			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());
	
			if($statut == 0){	 
				$requete = "SELECT COUNT(id) FROM dossier WHERE id_banque = '$id_banque' and date BETWEEN '$datepremier' AND '$datesecond'";
			}else if($statut == 1){
				$requete = "SELECT COUNT(id) FROM dossier WHERE id_banque = '$id_banque' and ((statut = 1 and '$datesecond' < date_changement_statut) or (statut = 2) or (statut = 3) or (statut = 5 and '$datesecond' > date_changement_statut))";
			}else{
				$requete = "SELECT COUNT(id) FROM dossier WHERE id_banque = '$id_banque' and statut = 5 and date_changement_statut BETWEEN '$datepremier' AND '$datesecond'";
			}
			
			$resultat = mysql_query ($requete);
	
			if (!$resultat) {
				echo "Impossible d'exêcuter la requête  dans la base : " . mysql_error();
				exit;
			}
				
			if ($ligne = mysql_fetch_assoc($resultat)) {
				$count = $ligne['COUNT(id)'];
			}
	
		}else {
			echo 'connexion impossible...'.mysql_error();
		}
	
		mysql_close($con);
	
		return $count;
	}
	
	public function getSumEmprunt()
	{
		$serveur = ConfigClement::$serveur;
		$nom_base = ConfigClement::$nom_base;
		$loginBd = ConfigClement::$loginBd;
		$motdepasse = ConfigClement::$motdepasse;
		
		//mysql_connect ($serveur,$login,$motdepasse) or die ('ERREUR '.mysql_error());
		$con = mysql_connect ($serveur,$loginBd,$motdepasse);
		
		if ($con) {
		
			mysql_select_db($nom_base)or die ('ERREUR '.mysql_error());
		
			$requete = "SELECT SUM(montant) as sum FROM emprunt WHERE id_dossier = '$this->id'";
			$resultat = mysql_query ($requete);
		
			if (!$resultat) {
				echo "Impossible d'exécuter la requête  dans la base : " . mysql_error();
				exit;
			}
		
			$sum = 0;
		
			while ($ligne = mysql_fetch_assoc($resultat)) {
		
				$sum = $ligne['sum'];
			}
		
		
		}else {
			echo 'connexion impossible...'.mysql_error();
		}
		
		mysql_close($con);
		
		return $sum;
	}
	
	
}



?>